/**
 * 防抖函数
 * @param {Function} fn - 需要防抖的函数
 * @param {Number} delay - 延迟时间（毫秒），默认300ms
 * @returns {Function} 防抖后的函数
 */
export const debounce = (fn, delay = 300) => {
  let timer = null;
  return (...args) => {
    // 每次触发时清除之前的定时器
    if (timer) clearTimeout(timer);
    // 重新设置定时器，延迟执行
    timer = setTimeout(() => {
      fn.apply(this, args); // 确保函数执行时的this指向正确
      timer = null;
    }, delay);
  };
};